题如其名,不过是c++的uaf漏洞,还好给了源码,不至于去IDA里面看那么丑的伪代码
程序中有后门give_shell
结构体中有函数指针,introduce
free
选项delete后没有清空指针存在UAF
after
选项中会new 一个新的空间,从文件中将内容读入
通过跟踪分析程序可知,存放着指针的堆块大小为0x20
1 | pwndbg> telescope 0x614c90 |
所以只需要free后申请 0x20 大小的堆块,并写入0x401548即可
1 | uaf@pwnable:~$ python -c "print '\x68\x15\x40\x00\x00\x00\x00\x00'" > /tmp/uaf_str |
注意需要写两次,因为delete的顺序是
delete m;
delete w;
而use的顺序是
m->introduce();
w->introduce();所以需要两次才能把m申请出来